package com.tbit.uqbike.object.pojo.vo;

import com.tbit.uqbike.object.pojo.ParamDate;
import com.tbit.uqbike.webmanager.util.csv.annotations.Csv;
import com.tbit.uqbike.webmanager.util.csv.annotations.Sum;

import java.math.BigDecimal;

/**
 * 总账单
 *
 * @Author:yanlun
 * @DATE: 2022/11/18
 */

public class AccountDayStatTotalDetailVO extends ParamDate {

    private Integer accountId;
    /**
     * 区域
     */
    @Csv(name = "区域")
    private String accountName;
    /**
     * 日期
     */
    @Csv(name = "日期")
    private String date;
    /**
     * 商户平台总收入
     */
    @Sum
    @Csv(name = "商户平台总收入")
    private BigDecimal merchantIncome;
    /**
     * 商户平台总收入笔数
     */
    @Sum
    @Csv(name = "商户平台总收入笔数")
    private Long merchantIncomeCount;
    /**
     * 商户平台总支出
     */
    @Sum
    @Csv(name = "商户平台总支出")
    private BigDecimal merchantExpend;
    /**
     * 商户平台总支出笔数
     */
    @Sum
    @Csv(name = "商户平台总支出笔数")
    private Long merchantExpendCount;
    /**
     * 运营总收入
     */
    @Sum
    @Csv(name = "运营总收入")
    private BigDecimal opIncome;
    /**
     * 运营总收入笔数
     */
    @Sum
    @Csv(name = "运营总收入笔数")
    private Long opIncomeCount;
    /**
     * 运营总支出
     */
    @Sum
    @Csv(name = "运营总支出")
    private BigDecimal opExpend;
    /**
     * 运营总支出笔数
     */
    @Sum
    @Csv(name = "运营总支出笔数")
    private Long opExpendCount;

    /**
     * 预存款总收入
     */
    @Sum
    @Csv(name = "预存款总收入")
    private BigDecimal balanceIncome;
    /**
     * 预存款总收入笔数
     */
    @Sum
    @Csv(name = "预存款总收入笔数")
    private Long balanceIncomeCount;
    /**
     * 预存款总支出
     */
    @Sum
    @Csv(name = "预存款总支出")
    private BigDecimal balanceExpend;
    /**
     * 预存款总支出笔数
     */
    @Sum
    @Csv(name = "预存款总支出笔数")
    private Long balanceExpendCount;

    /**
     * 押金总收入
     */
    @Sum
    @Csv(name = "押金总收入")
    private BigDecimal depositIncome;
    /**
     * 押金总收入笔数
     */
    @Sum
    @Csv(name = "押金总收入笔数")
    private Long depositIncomeCount;
    /**
     * 押金总支出
     */
    @Sum
    @Csv(name = "押金总支出")
    private BigDecimal depositExpend;
    /**
     * 押金总支出笔数
     */
    @Sum
    @Csv(name = "押金总支出笔数")
    private Long depositExpendCount;

    /**
     * 其他总收入
     */
    @Sum
    @Csv(name = "其他总收入")
    private BigDecimal otherIncome;
    /**
     * 其他总收入笔数
     */
    @Sum
    @Csv(name = "其他总收入笔数")
    private Long otherIncomeCount;
    /**
     * 其他总支出
     */
    @Sum
    @Csv(name = "其他总支出")
    private BigDecimal otherExpend;
    /**
     * 其他总支出笔数
     */
    @Sum
    @Csv(name = "其他总支出笔数")
    private Long otherExpendCount;

    public AccountDayStatTotalDetailVO() {
        fillData();
    }

    public Integer getAccountId() {
        return accountId;
    }

    public void setAccountId(Integer accountId) {
        this.accountId = accountId;
    }

    public String getAccountName() {
        return accountName;
    }

    public void setAccountName(String accountName) {
        this.accountName = accountName;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public BigDecimal getMerchantIncome() {
        return merchantIncome == null ? null : merchantIncome.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setMerchantIncome(BigDecimal merchantIncome) {
        this.merchantIncome = merchantIncome;
    }

    public Long getMerchantIncomeCount() {
        return merchantIncomeCount;
    }

    public void setMerchantIncomeCount(Long merchantIncomeCount) {
        this.merchantIncomeCount = merchantIncomeCount;
    }

    public BigDecimal getMerchantExpend() {
        return merchantExpend == null ? null : merchantExpend.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setMerchantExpend(BigDecimal merchantExpend) {
        this.merchantExpend = merchantExpend;
    }

    public Long getMerchantExpendCount() {
        return merchantExpendCount;
    }

    public void setMerchantExpendCount(Long merchantExpendCount) {
        this.merchantExpendCount = merchantExpendCount;
    }

    public BigDecimal getOpIncome() {
        return opIncome == null ? null : opIncome.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setOpIncome(BigDecimal opIncome) {
        this.opIncome = opIncome;
    }

    public Long getOpIncomeCount() {
        return opIncomeCount;
    }

    public void setOpIncomeCount(Long opIncomeCount) {
        this.opIncomeCount = opIncomeCount;
    }

    public BigDecimal getOpExpend() {
        return opExpend == null ? null : opExpend.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setOpExpend(BigDecimal opExpend) {
        this.opExpend = opExpend;
    }

    public Long getOpExpendCount() {
        return opExpendCount;
    }

    public void setOpExpendCount(Long opExpendCount) {
        this.opExpendCount = opExpendCount;
    }

    public BigDecimal getBalanceIncome() {
        return balanceIncome == null ? null : balanceIncome.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setBalanceIncome(BigDecimal balanceIncome) {
        this.balanceIncome = balanceIncome;
    }

    public Long getBalanceIncomeCount() {
        return balanceIncomeCount;
    }

    public void setBalanceIncomeCount(Long balanceIncomeCount) {
        this.balanceIncomeCount = balanceIncomeCount;
    }

    public BigDecimal getBalanceExpend() {
        return balanceExpend == null ? null : balanceExpend.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setBalanceExpend(BigDecimal balanceExpend) {
        this.balanceExpend = balanceExpend;
    }

    public Long getBalanceExpendCount() {
        return balanceExpendCount;
    }

    public void setBalanceExpendCount(Long balanceExpendCount) {
        this.balanceExpendCount = balanceExpendCount;
    }

    public BigDecimal getDepositIncome() {
        return depositIncome == null ? null : depositIncome.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setDepositIncome(BigDecimal depositIncome) {
        this.depositIncome = depositIncome;
    }

    public Long getDepositIncomeCount() {
        return depositIncomeCount;
    }

    public void setDepositIncomeCount(Long depositIncomeCount) {
        this.depositIncomeCount = depositIncomeCount;
    }

    public BigDecimal getDepositExpend() {
        return depositExpend == null ? null : depositExpend.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setDepositExpend(BigDecimal depositExpend) {
        this.depositExpend = depositExpend;
    }

    public Long getDepositExpendCount() {
        return depositExpendCount;
    }

    public void setDepositExpendCount(Long depositExpendCount) {
        this.depositExpendCount = depositExpendCount;
    }

    public BigDecimal getOtherIncome() {
        return otherIncome == null ? null : otherIncome.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setOtherIncome(BigDecimal otherIncome) {
        this.otherIncome = otherIncome;
    }

    public Long getOtherIncomeCount() {
        return otherIncomeCount;
    }

    public void setOtherIncomeCount(Long otherIncomeCount) {
        this.otherIncomeCount = otherIncomeCount;
    }

    public BigDecimal getOtherExpend() {
        return otherExpend == null ? null : otherExpend.setScale(2, BigDecimal.ROUND_HALF_UP);
    }

    public void setOtherExpend(BigDecimal otherExpend) {
        this.otherExpend = otherExpend;
    }

    public Long getOtherExpendCount() {
        return otherExpendCount;
    }

    public void setOtherExpendCount(Long otherExpendCount) {
        this.otherExpendCount = otherExpendCount;
    }

    public void fillData() {
        BigDecimal bigDecimal = new BigDecimal(0);
        this.merchantIncome = this.merchantIncome == null ? bigDecimal : this.merchantIncome;
        this.merchantIncomeCount = this.merchantIncomeCount == null ? 0L : this.merchantIncomeCount;
        this.merchantExpend = this.merchantExpend == null ? bigDecimal : this.merchantExpend;
        this.merchantExpendCount = this.merchantExpendCount == null ? 0L : this.merchantExpendCount;
        this.opIncome = this.opIncome == null ? bigDecimal : this.opIncome;
        this.opIncomeCount = this.opIncomeCount == null ? 0L : this.opIncomeCount;
        this.opExpend = this.opExpend == null ? bigDecimal : this.opExpend;
        this.opExpendCount = this.opExpendCount == null ? 0L : this.opExpendCount;
        this.balanceIncome = this.balanceIncome == null ? bigDecimal : this.balanceIncome;
        this.balanceIncomeCount = this.balanceIncomeCount == null ? 0L : this.balanceIncomeCount;
        this.balanceExpend = this.balanceExpend == null ? bigDecimal : this.balanceExpend;
        this.balanceExpendCount = this.balanceExpendCount == null ? 0L : this.balanceExpendCount;
        this.depositIncome = this.depositIncome == null ? bigDecimal : this.depositIncome;
        this.depositIncomeCount = this.depositIncomeCount == null ? 0L : this.depositIncomeCount;
        this.depositExpend = this.depositExpend == null ? bigDecimal : this.depositExpend;
        this.depositExpendCount = this.depositExpendCount == null ? 0L : this.depositExpendCount;
        this.otherIncome = this.otherIncome == null ? bigDecimal : this.otherIncome;
        this.otherIncomeCount = this.otherIncomeCount == null ? 0L : this.otherIncomeCount;
        this.otherExpend = this.otherExpend == null ? bigDecimal : this.otherExpend;
        this.otherExpendCount = this.otherExpendCount == null ? 0L : this.otherExpendCount;
    }

    @Override
    public String toString() {
        return "AccountDayStatTotalDetailVO{" +
                "accountId=" + accountId +
                ", accountName='" + accountName + '\'' +
                ", date='" + date + '\'' +
                ", merchantIncome=" + merchantIncome +
                ", merchantIncomeCount=" + merchantIncomeCount +
                ", merchantExpend=" + merchantExpend +
                ", merchantExpendCount=" + merchantExpendCount +
                ", opIncome=" + opIncome +
                ", opIncomeCount=" + opIncomeCount +
                ", opExpend=" + opExpend +
                ", opExpendCount=" + opExpendCount +
                ", balanceIncome=" + balanceIncome +
                ", balanceIncomeCount=" + balanceIncomeCount +
                ", balanceExpend=" + balanceExpend +
                ", balanceExpendCount=" + balanceExpendCount +
                ", depositIncome=" + depositIncome +
                ", depositIncomeCount=" + depositIncomeCount +
                ", depositExpend=" + depositExpend +
                ", depositExpendCount=" + depositExpendCount +
                ", otherIncome=" + otherIncome +
                ", otherIncomeCount=" + otherIncomeCount +
                ", otherExpend=" + otherExpend +
                ", otherExpendCount=" + otherExpendCount +
                '}';
    }
}
